package cn.tedu.tmall.common.util;

import io.jsonwebtoken.Claims; // 新增导入
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.security.Keys;
import javax.crypto.SecretKey;
import java.nio.charset.StandardCharsets;
import java.util.Date;
import java.util.Map;

public class JwtUtils {

    private static final long EXPIRATION = 7200000; // 2小时

    public static String generate(Map<String, Object> claims, String secretKey) {
        SecretKey key = Keys.hmacShaKeyFor(secretKey.getBytes(StandardCharsets.UTF_8));
        return Jwts.builder()
                .claims(claims)
                .expiration(new Date(System.currentTimeMillis() + EXPIRATION))
                .signWith(key)
                .compact();
    }

    // 关键修改：返回类型从Map<String, Object>改为Claims
    public static Claims parse(String jwt, String secretKey) {
        SecretKey key = Keys.hmacShaKeyFor(secretKey.getBytes(StandardCharsets.UTF_8));
        // parseSignedClaims返回的getPayload()实际类型就是Claims，直接返回即可
        return Jwts.parser()
                .verifyWith(key)
                .build()
                .parseSignedClaims(jwt)
                .getPayload(); // 这里的返回值本质是Claims，而非普通Map
    }
}